//要抽取选择器,必须在页面加载完毕才行,因为选择器需要找到对应的标签,所以要在$(function(){})中抽取
//而在这里面抽取,哪些在$(function(){})之外的方法就无法引用到,所以必须将那些方法放进$(function(){})内
//而这样一来,页面中onclick事件又找不到方法了
//但是事件绑定方式有多种,其中一种是页面加载时绑定方法,一种是等页面加载完毕再绑定方法,所以可以选择后者
//而绑定则通过传入方法名参数,实现绑定

$(function () {
    //抽取表格选择器
    var member_datagrid = $("#member_datagrid");
    //抽取表单选择器
    var member_edit_Form = $("#member_edit_Form");
    //抽取对话框选择器
    var member_edit_dialog = $("#member_edit_dialog");
    //角色选择框的选择器
    var combobox_role = $("#combobox_role");
    //修改密码表单
    var modify_password_form = $("#modify_password_form");
    //修改密码弹框
    var modify_password_dialog = $("#modify_password_dialog");
    //确定修改密码按钮
    var save_modifyPassword = $("#save_modifyPassword");
    //取消修改密码按钮
    var cancel_modifyPassword = $("#cancel_modifyPassword");
    //重置密码按钮
    var resetPassword = $("#resetPassword");
    //补卡按钮
    var supplementCard = $("#supplementCard");
    //会员卡卡号标签
    var cardSn = $("#cardSn");
    //给筛选会员准备的变量
    var openOrClose_param = 0;
    var resourceId=$("#resourceId");
    var operatorId=$("#operatorId");
    var keyword=$("#keyword");
    var moveGroup=$("#moveGroup");
    var addTag=$("#addTag");
    var cmdObj = {
        query:function () {
          alert(3)
        },

        //添加会员
        addMember:function () {
            //清空表单残留信息
            member_edit_Form.form("clear");
            //设置表单title
            member_edit_dialog.dialog("setTitle", "新增");
            cardSn.textbox("readonly",false);
            //添加会员首先要弹出一个对话框,对话框中包含一个空表单,先把表单做好
            member_edit_dialog.dialog("open");
        }
        ,
        openOrClose:function () {
            if (openOrClose_param == 0) {
                openOrClose_param = 1;
                $("#openOrClose").removeAttr("hidden");
            } else {
                openOrClose_param = 0;
                $("#openOrClose").attr("hidden", "hidden");
            }
        },
        //编辑会员
        editMember:function () {
            //先清空残留信息
            member_edit_Form.form("clear");
            //在设置title
            member_edit_dialog.dialog("setTitle", "编辑");
            //获取选中的数据行
            var selectedData = member_datagrid.datagrid("getSelected");
            //如果选中了就执行,没有选中就提示
            if (!selectedData) {
                $.messager.alert("提示", "请选择一行数据!", "info");
                return;
            }
            //有部门数据的部门处理:如果有部门,就把选中数据对象添加一个新的属性
            if (selectedData.level) {
                selectedData["level.id"] = selectedData.level.id;
            }
            if (selectedData.gender) {
                selectedData["gender.id"] = selectedData.gender.id;
            }
            if (selectedData.shop) {
                selectedData["shop.id"] = selectedData.shop.id;
            }
            if (selectedData.resource) {
                selectedData["resource.id"] = selectedData.resource.id;
            }
            if (selectedData.payway) {
                selectedData["payway.id"] = selectedData.payway.id;
            }
            if (selectedData.mgroup) {
                selectedData["mgroup.id"] = selectedData.mgroup.id;
            }
            if (selectedData.inputUser) {
                selectedData["inputUser.id"] = selectedData.inputUser.id;
            }
            if (selectedData.recommender) {
                selectedData["recommender.id"] = selectedData.recommender.id;
            }
            cardSn.textbox("readonly",true);
            member_edit_Form.form("load", selectedData);
            member_edit_dialog.dialog("open");

        },
        //会员补卡
        supplementCard:function () {
            //先清空残留信息
            member_edit_Form.form("clear");
            //在设置title
            member_edit_dialog.dialog("setTitle", "会员补卡信息");
            //获取选中的数据行
            var selectedData = member_datagrid.datagrid("getSelected");
            //如果选中了就执行,没有选中就提示
            if (!selectedData) {
                $.messager.alert("提示", "请选择一行数据!", "info");
                return;
            }
            if (selectedData.level) {
                selectedData["level.id"] = selectedData.level.id;
            }
            if (selectedData.gender) {
                selectedData["gender.id"] = selectedData.gender.id;
            }
            if (selectedData.shop) {
                selectedData["shop.id"] = selectedData.shop.id;
            }
            if (selectedData.resource) {
                selectedData["resource.id"] = selectedData.resource.id;
            }
            if (selectedData.payway) {
                selectedData["payway.id"] = selectedData.payway.id;
            }
            if (selectedData.mgroup) {
                selectedData["mgroup.id"] = selectedData.mgroup.id;
            }
            if (selectedData.inputUser) {
                selectedData["inputUser.id"] = selectedData.inputUser.id;
            }
            if (selectedData.recommender) {
                selectedData["recommender.id"] = selectedData.recommender.id;
            }
            member_edit_Form.form("load", selectedData);
            cardSn.textbox("readonly",false);
            member_edit_dialog.dialog("open");

        }
        ,
        //删除会员
        removeMember:function () {
            //先选择一个会员
            var selectedData = member_datagrid.datagrid("getSelected");
            if (!selectedData) {
                $.messager.alert("提示", "请选择一条信息!", "info");
                return;
            }
            $.messager.confirm("确认对话框", "您确认要删除该会员吗?", function (yes) {
                if (yes) {
                    $.post("/member/remove", {id: selectedData.id}, function (data) {
                        if (data.success) {
                            $.messager.alert("提示", "操作成功!", "info", function () {
                                //关闭对话框,刷新表格
                                member_edit_dialog.dialog("close");
                                member_datagrid.datagrid("reload");
                            });

                        } else {
                            $.messager.alert("提示", data.msg, "error");
                            //关闭对话框,刷新表格
                            member_edit_dialog.dialog("close");
                            member_datagrid.datagrid("reload");
                        }
                    });
                }
            });

        }
        ,
        //刷新
        reloadMember:function () {
            //刷新是表格的方法
            member_datagrid.datagrid("reload");
        }
        ,
        //确定按钮
        save:function () {
            var url = "/member/save";
            //获取表单中name为id的元素的id属性值,判断是否为空,如果为空是编辑,否则是新增
            var idValue = $("input[name=id]").val();//判断是新增还是编辑,是通过判断id属性里面有没有值的方式
            if (idValue) {
                url = "/member/update";
            }
            //保存则要发起ajax请求,做保存数据操作,保存的是表单,所以需要表单提交信息,这是表单的提交表单方法
            member_edit_Form.form("submit", {
                url: url,
                onSubmit: function (param) {

                },
                success: function (data) {//提交之后获得一个回调函数,带了一个json数据
                    //先将data转换为json类型的data
                    var data = $.parseJSON(data);
                    if (data.success) {
                        $.messager.alert("提示", "操作成功!", "info", function () {
                            //关闭对话框,刷新表格
                            member_edit_dialog.dialog("close");
                            member_datagrid.datagrid("reload");
                        });

                    } else {
                        $.messager.alert("提示", data.msg, "error");
                        //关闭对话框,刷新表格
                        member_edit_dialog.dialog("close");
                        member_datagrid.datagrid("reload");
                    }
                }
            });
        }
        ,
        //取消按钮
        cancel:function () {
            //取消就是关闭对话框,不刷新页面
            member_edit_dialog.dialog("close");
        }
        ,
        //搜索按钮
        searchMember:function () {
            //获取高级查询的参数
            var keywordValue = $("#keyword").val();
            //调用datagrid的load方法,进行重新加载,说明这个方法是依赖datagrid的第一次查询的,因为第一次渲染确定了url,设计很巧妙
            //也即:高级查询可以直接用datagrid的load方法实现
            member_datagrid.datagrid("load", {keyword: keywordValue});
        },
        //搜索按钮2
        searchMember2:function () {
            var tagIds = $("#tagIds").combobox("getValues").join(",");
            member_datagrid.datagrid("load", {
                keyword: $("#keyword").val(),
                resourceId:$("#resourceId").val(),
                operatorId:$("#operatorId").val(),
                levelId:$("#levelId").val(),
                groupId:$("#groupId").val(),
                tagIds:tagIds
        });
        }
        ,
        //导出所有会员数据
        exportMemberInfos:function () {
            window.location.href = "/member/export";
        }
        ,

        //会员等级格式化
        levelFormatter:function (value, row, index) {
            if (value) {
                return value.name;
            }
        }
        ,
        //所属店铺格式化
        shopFormatter:function (value, row, index) {
            if (value) {
                return value.name;
            }
        }
        ,
        //来源格式化
        resourceFormatter:function (value, row, index) {
            if (value) {
                return value.name;
            }
        }
        ,
        //挂失
        lossCard:function () {
            //先:选中一个会员
            //然后:获取被选中的会员行数据
            //提示是否确定要挂失
            //如果是,就发起ajax请求,传入会员的卡号,更改会员卡状态
            var selectedData = member_datagrid.datagrid("getSelected");
            if (!selectedData) {
                $.messager.alert("提示", "请选择一条信息!", "info");
                return;
            }
            $.messager.confirm("确认对话框", "您确认要挂失该会员的会员卡吗?", function (yes) {
                if (yes) {
                    $.post("/member/lossCard", {id: selectedData.id}, function (data) {
                        if (data.success) {
                            $.messager.alert("提示", "挂失成功!", "info", function () {
                                //关闭对话框,刷新表格
                                member_edit_dialog.dialog("close");
                                member_datagrid.datagrid("reload");
                            });
                        } else {
                            $.messager.alert("提示", data.msg, "error");
                            //关闭对话框,刷新表格
                            member_edit_dialog.dialog("close");
                            member_datagrid.datagrid("reload");
                        }
                    });
                }
            });
        }
        ,
        //取消挂失
        cancelLossCard:function () {
            var selectedData = member_datagrid.datagrid("getSelected");
            if (!selectedData) {
                $.messager.alert("提示", "请选择一条信息!", "info");
                return;
            }
            $.messager.confirm("确认对话框", "您确认要取消该卡的挂失吗?", function (yes) {
                if (yes) {
                    $.post("/member/cancelLossCard", {id: selectedData.id}, function (data) {
                        if (data.success) {
                            $.messager.alert("提示", "解挂成功!", "info", function () {
                                //关闭对话框,刷新表格
                                member_edit_dialog.dialog("close");
                                member_datagrid.datagrid("reload");
                            });
                        } else {
                            $.messager.alert("提示", data.msg, "error");
                            //关闭对话框,刷新表格
                            member_edit_dialog.dialog("close");
                            member_datagrid.datagrid("reload");
                        }
                    });
                }
            });
        }
        ,
        //修改密码
        modifyPassword:function () {
            //先清空残留信息
            modify_password_form.form("clear");
            //在设置title
            modify_password_dialog.dialog("setTitle", "修改密码");
            //获取选中的数据行
            var selectedData = member_datagrid.datagrid("getSelected");
            //如果选中了就执行,没有选中就提示
            if (!selectedData) {
                $.messager.alert("提示", "请选择一行数据!", "info");
                return;
            }
            //回填id
            modify_password_form.form("load", selectedData);
            //添加会员首先要弹出一个对话框,对话框中包含一个空表单,先把表单做好
            modify_password_dialog.dialog({
                title: "修改密码",
                width: 300,
                height: 200,
                closed: true
            });
            modify_password_dialog.dialog("open");
        }
        ,
        //确定修改密码
        save_modifyPassword:function () {
            modify_password_form.form("submit", {
                url: "/member/modifyPassword",
                success: function (data) {//提交之后获得一个回调函数,带了一个json数据
                    //先将data转换为json类型的data
                    var data = $.parseJSON(data);
                    if (data.success) {
                        $.messager.alert("提示", "修改成功!", "info", function () {
                            //关闭对话框,刷新表格
                            modify_password_dialog.dialog("close");
                            member_datagrid.datagrid("reload");
                        });

                    } else {
                        $.messager.alert("提示", data.msg, "error");
                        //关闭对话框,刷新表格
                        modify_password_dialog.dialog("close");
                        member_datagrid.datagrid("reload");
                    }
                }
            });
        }
        ,
        //取消修改密码
        cancel_modifyPassword:function () {
            modify_password_dialog.dialog("close");
        }
        ,
        //重置密码
        resetPassword:function () {
            var selectedData = member_datagrid.datagrid("getSelected");
            if (!selectedData) {
                $.messager.alert("提示", "您还没有选择要重置密码的会员!", "info");
                return;
            }
            $.post("/member/resetPassword", {id: selectedData.id}, function (data) {
                if (data.success) {
                    $.messager.alert("提示", "密码重置成功!", "info", function () {
                        //关闭对话框,刷新表格
                        member_edit_dialog.dialog("close");
                        member_datagrid.datagrid("reload");
                    });
                } else {
                    $.messager.alert("提示", data.msg, "error");
                    //关闭对话框,刷新表格
                    member_edit_dialog.dialog("close");
                    member_datagrid.datagrid("reload");
                }
            });
        }
        ,
}
    //渲染数据表格
    member_datagrid.datagrid({
        url: '/member/list',//数据来源,需要json,如果是资源,则请求这个资源以获取json
        // fit: true,
        fitColumns: true,
        pagination: true,//分页条
        singleSelect: true,//单选
        border: false,
        columns: [[
            {field: 'cardSn', title: '卡号', width: 100},
            {field: 'username', title: '会员名称', width: 100},
            {field: 'tel', title: '电话', width: 100},
            {field: 'level', title: '等级', width: 100, formatter: cmdObj.levelFormatter},
            {field: 'accumulation', title: '可用积分', width: 100},
            {field: 'totalAccount', title: '储值余额', width: 100},
            {field: 'shop', title: '所属店铺', width: 100, formatter: cmdObj.shopFormatter},
            {field: 'resource', title: '来源', width: 100, formatter: cmdObj.resourceFormatter}
        ]],
        onClickRow:function (index,row) {
            console.log(row);
            var state=row.state.id;
            if(state==1){
                //隐藏解挂,显示挂失
                $("#loss").show();
                $("#unloss").hide();
            }else{
                //隐藏挂失,显示解挂
                $("#unloss").show();
                $("#loss").hide();
            }
        }
    });
    //渲染来源下拉列表
    resourceId.combobox({
        valueField:'id',
        textField:'name',
        url:'/resource/listAll',
        onChange:function () {
            member_datagrid.datagrid("load", {
                resourceId:$("#resourceId").val(),
                operatorId:$("#operatorId").val()
            });
        }
    });
    //渲染操作员下拉列表
    operatorId.combobox({
        valueField:'id',
        textField:'username',
        url:'/operator/listAll',
        onChange:function () {
            member_datagrid.datagrid("load", {
                resourceId:$("#resourceId").val(),
                operatorId:$("#operatorId").val()
            });
        }
    });
    //渲染底部移动分组下拉列表
    moveGroup.combobox({
        valueField:'id',
        textField:'name',
        url:'/group/listAll',
        onChange:function () {
            //获取数据表格中选中的行
            //获取它的id
            //获取下拉列表的值
            //发送ajax请求,执行更改操作
            var selectedRow  = member_datagrid.datagrid("getSelected");
            if(!selectedRow){
                $.messager.alert("提示","请先选择一个会员!","info");
                return;
            }
            var groupId = $("#moveGroup").val()
            $.post("/member/moveGroup",{id:selectedRow.id,newGroupId:groupId},function (data) {
                if(data.success){
                    $.messager.alert("提示","移动成功!","info");
                }else{
                    $.messager.alert("提示",data.msg,"error");
                }
            });
        }
    });
    //渲染底部打标签下拉列表
    addTag.combobox({
        valueField:'id',
        textField:'name',
        url:'/tag/listAll',
        onChange:function () {
            //获取数据表格中选中的行
            //获取它的id
            //获取下拉列表的值
            //发送ajax请求,执行更改操作
            var selectedRow  = member_datagrid.datagrid("getSelected");
            if(!selectedRow){
                $.messager.alert("提示","请先选择一个会员!","info");
                return;
            }
            var tagId = $("#addTag").val()
            $.post("/member/addTag",{id:selectedRow.id,newTagId:tagId},function (data) {
                if(data.success){
                    $.messager.alert("提示","会员标签设置成功!","info");
                }else{
                    $.messager.alert("提示",data.msg,"error");
                }
            });
        }
    });
    //为所有带data-cmd属性的a标签添加对应事件
    $("a[data-cmd]").click(function () {
        var cmd = $(this).data("cmd");
        cmdObj[cmd]();
    });
})